Skip to content

http 和 https 的区别

http 基于 TCP 协议 传输控制协议 https 基于 TLS 协议,传输层安全协议

http 有一些缺点 端口号:80 https 443 窃听:明文传输 加密啊 篡改:代理商中间人劫持修改 摘要 认证:客户端服务器伪装,海量攻击请求 CA

加密介绍

https 加密使用的加密套件 主要有:对称加密、非对称加密、椭圆 ECC、rsa hash 加密

对称加密:

  • 用于数据传输阶段
  • 服务器、客户端端共享一个密钥,密钥劫持,故怎样加密密钥

非对称加密:

  • 服务器将自己信息 hash 和公钥,用自己私钥生成一个签名,给 CA 结构,CA 机构用自己私钥给它发一个签名
  • 私钥加密公钥解,公钥加密,私钥验证,性能问题,效率不高,数据越大解密越复杂

数据上有安全性考虑吗,比如存储,比如说加密,秘钥生成,保存,加密解密,对 md5 使用吗,理解 md5 吗,唯一不可逆,断点上传,密码的保存,md5,加密,hash 一下

密码: rsa 双层 md5

https://zhuanlan.zhihu.com/p/43789231

对称加密问题(为什么要用对称加密+非对称加密)

因为一个相同钥匙,在网络上传输,实际上等于明文,中间人可以获取到密钥进行传输

非对称加密(为什么不能只用非对称加密)

  • 客户端发送给服务器:客户端用(服务器的公钥)加密,服务器用自己私钥解开
  • 服务器发送给客户端:服务器用(客户端的公钥)加密,客户端用自己私钥解开 带来重要问题:耗时间,

混合加密(非对称加密+对称加密)(为什么需要数字证书)

  • 非对称:客户端发送给服务器:客户端用(服务器的公钥)加密自己的密钥,服务器用自己私钥解开的到密钥
  • 对称加密:用密钥进行加密传输

带来的问题:有可能出现狸猫换太子,根本原因是浏览器无法确认收到的公钥是不是网站自己

  • 中间人劫持到公钥 A,保存下来,把数据包中的公钥 A 替换成自己伪造的公钥 B(它当然也拥有公钥 B 对应的私钥 B’)
  • 中间人劫持后用私钥 B’解密得到密钥 X,再用公钥 A 加密后传给服务器。
  • 服务器拿到后用私钥 A’ 解密得到密钥 X

CA 认证

  • 服务器:服务器将自己公钥传递给 CA 认证
  • CA 机构:CA 有自己的公钥和私钥,它把内容进行一个签名;签名把证书做个 hash 摘要,将摘要好的内容用私钥加密
  • 客户端操作系统存储权威机构的根证书,可以进行验签,用内置的 CA 公钥进行解密,得到摘要。
  • 将传递明文的摘要 和解密出来的进行匹配,如果一致就是合法的

https 加密过程

  1. 客户端发送一个 Clinet Hello 和随机数 Client Random, 以及自己支持的加密套件(密钥交换算法+签名算法+对称加密算法+摘要算法)

  2. 服务器发送一个 Server Hello 和随机数 Server Random, 选中一个客户端提供的加密套件

  3. 服务器发送自己 CA 机构颁发的证书,客户端获取到证书,验证签名,取出 服务器公钥

  4. 服务器发送一个 DH 参数签名后发送给客户端,客户端拿到服务器 DH,进行验签,证明参数是服务器给的

  5. 服务器发送 Server Hello Done

  6. 客户端发送一个 DH 随机参数,发送给服务器

服务端有:随机数 C + 随机数 S + ServerParams DH + ClientParams DH =》 会话密钥 客户端有:随机数 C + 随机数 S + ServerParams DH + ClientParams DH =》 会话密钥

  1. 客户端将换预主密钥发送给服务器
  2. 通过这个相同的密钥(对称加密)

随机数,防止重放攻击

在 MIT 许可下发布